/*
 * Home.h
 *
 *  Created on: 11/06/2011
 *      Author: dela
 */

#ifndef HOME_H_
#define HOME_H_

#include <gtkmm.h>
#include <list>
#include "common/Course.h"
#include "common/Class.h"

class Home: public Gtk::Window {
private:
	Glib::RefPtr<Gtk::Builder> builder;
	std::list<Course> courses;
	std::list<Class> classes;

	/**
	 * Modelo de columnas para la lista.
	 */
	class ModelColumns: public Gtk::TreeModel::ColumnRecord {
	public:
		Gtk::TreeModelColumn<unsigned int> id;
		Gtk::TreeModelColumn<Glib::ustring> type;
		Gtk::TreeModelColumn<Glib::ustring> name;
		Gtk::TreeModelColumn<Glib::ustring> startDate;

		ModelColumns() {
			add(id);
			add(type);
			add(name);
			add(startDate);
		}
	};
	ModelColumns mColumns;

	Glib::RefPtr<Gtk::ListStore> treeModel;

	// Obtiene la información para llenar la tabla:
	void setTreeModelInfo();

	// Click del boton crear clase:
	void onCreateClass();

	// Click del boton crear curso:
	void onCreateCourse();

	// OnFocus:
	bool onFocus(GdkEventFocus* dt);

	// Se selecciona una fila de la tabla:
	void onRowSelected(const Gtk::TreeModel::Path &path,
			Gtk::TreeViewColumn *column);
public:
	Home(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& builder);
};

#endif /* HOME_H_ */
